package chapter4;
import java.util.Scanner;
/****************************************************************
 * Author：icynlau
 * Description:  产生在圆上的随机点，显示这三个随机点组成的三角形的三个角的度数
 *  		虽然题目说是产生随机点，但是实际上可以先随机生成3个角度，再用3个角度确定三个点的位置
 *  		最后用余弦定理求出三角形的三个内角度数
 *  //注意，余弦定理的结果需要转换成度Math.toDegrees(Math.acos((s1*s1-s2*s2-s3*s3)/(-2*s2*s3)))
 * Date:2021/4/2
 * ***************************************************************
 */
public class exc4_6 {
	public static void main(String[] args) {
		double a1=Math.random()*360;
		double a2=0;
		double a3=0;
		do {
			a2=Math.random()*360;
		}while (Math.abs(a1-a2)<0.001);
		do {
			a3=Math.random()*360;
		}while (Math.abs(a3-a2)<0.001||Math.abs(a3-a1)<0.001);
		
		double x1=40.0*Math.cos(Math.toRadians(a1));
		double y1=40.0*Math.sin(Math.toRadians(a1));
		double x2=40.0*Math.cos(Math.toRadians(a2));
		double y2=40.0*Math.sin(Math.toRadians(a2));
		double x3=40.0*Math.cos(Math.toRadians(a3));
		double y3=40.0*Math.sin(Math.toRadians(a3));
		System.out.printf("Three points are : (%.2f, %.2f)( %.2f, %.2f) (%.2f, %.2f)\n",x1,y1,x2,y2,x3,y3);
		
		//求三条边长
		double s1=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
		double s2=Math.sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
		double s3=Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
		
		//注意，余弦定理的结果需要转换成度Math.toDegrees(Math.acos((s1*s1-s2*s2-s3*s3)/(-2*s2*s3)))
		double angle1=Math.toDegrees(Math.acos((s1*s1-s2*s2-s3*s3)/(-2*s2*s3)));
		double angle2=Math.toDegrees(Math.acos((s2*s2-s1*s1-s3*s3)/(-2*s1*s3)));
		double angle3=Math.toDegrees(Math.acos((s3*s3-s2*s2-s1*s1)/(-2*s1*s2)));
		System.out.printf("The three angles are %.5f °  %.5f °  %.5f °", angle1,angle2,angle3);
		
		
		
		
	}

}
